home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
CHKBOOK.PAK
/
CHECKVW.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-06
|
5KB
|
189 lines
// checkvw.cpp : implementation of the CCheckView class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "chkbook.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CCheckView, CFormView)
BEGIN_MESSAGE_MAP(CCheckView, CFormView)
//{{AFX_MSG_MAP(CCheckView)
ON_COMMAND(ID_EDIT_COMMIT_CHECK, OnEditCommitCheck)
ON_EN_CHANGE(IDC_AMOUNTNUM, OnAmountNumChange)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Construction, destruction
CCheckView::CCheckView()
: CFormView(CCheckView::IDD)
{
//{{AFX_DATA_INIT(CCheckView)
m_nCheckNo = 0;
m_dwCents = 0;
//}}AFX_DATA_INIT
}
CCheckView::~CCheckView()
{
}
/////////////////////////////////////////////////////////////////////////////
// Operations
void CCheckView::OnUpdate(CView*, LPARAM lHint, CObject* pHint)
{
// OnUpdate() is called whenever the document has changed and,
// therefore, the view needs to redisplay some or all of itself.
CChkBookDoc* pDoc = GetDocument();
if (pDoc->GetRecordCount() == 0)
return;
if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
{
m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
}
else
{
m_nCheckNo = pDoc->GetActiveCheckNo();
}
GetDocument()->GetCheck(m_nCheckNo, m_dwCents, m_strPayTo,
m_strDate, m_strMemo);
UpdateData(FALSE); // Copy the view form object's data to the
// controls (via DoDataExchange).
Invalidate(); // Repaint the entire form view.
}
void CCheckView::DoDataExchange(CDataExchange* pDX)
{
// ClassWizard maintains mappings between data of the CCheckView
// class and the controls in the dialog template resource for this
// form view.
//{{AFX_DATA_MAP(CCheckView)
DDX_Text(pDX, IDC_CHECKNO, m_nCheckNo);
DDX_Text(pDX, IDC_DATE, m_strDate);
DDX_Text(pDX, IDC_MEMO, m_strMemo);
DDX_Text(pDX, IDC_PAYTO, m_strPayTo);
DDX_DollarsCents(pDX, IDC_AMOUNTNUM, m_dwCents);
//}}AFX_DATA_MAP
// Update the written-out dollars and cents (eg, "nineteen and
// 98/100ths dollars") after loading or saving the numeric
// dollars and cents control (IDC_AMOUNTNUM).
CString str = GetDollarsCentsText(m_dwCents);
GetDlgItem(IDC_AMOUNTTEXT)->SetWindowText(str);
}
BOOL CCheckView::MaybeCommitDirtyCheck()
{
// Ask the user to confirm the discarding of uncommitted changes
// to the active check.
// Return FALSE if the user wants to cancel the change-selection
// command that would have discarded the uncommitted changes; and
// set the focus
DWORD dwCents;
CString strPayTo, strDate, strMemo;
// If there is a validation error, then let UpdateData()
// return focus to the offending control.
if (!UpdateData())
return FALSE;
CChkBookDoc* pDoc = GetDocument();
ASSERT(m_nCheckNo == pDoc->GetActiveCheckNo());
pDoc->GetCheck(m_nCheckNo, dwCents, strPayTo, strDate, strMemo);
if ( (dwCents == m_dwCents)
&& (strPayTo == m_strPayTo)
&& (strDate == m_strDate)
&& (strMemo == m_strMemo))
return TRUE;
switch (AfxMessageBox(IDS_PROMPT_COMMIT_DIRTY_CHECK,
MB_YESNOCANCEL))
{
case IDYES:
pDoc->UpdateCheck(this, m_nCheckNo, m_dwCents,
m_strPayTo, m_strDate, m_strMemo);
return TRUE;
case IDNO:
return TRUE;
case IDCANCEL:
CMDIChildWnd* pChildWnd = (CMDIChildWnd*)GetParentFrame();
pChildWnd->GetMDIFrame()->MDIActivate(pChildWnd);
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CCheckView message handlers
void CCheckView::OnEditCommitCheck()
{
// This handler is called when the user chooses the Edit Commit
// Check menu command or toolbar button.
// Copy dialog fields to the view object's data members.
// If there are validation errors, then abandon the commit.
if (!UpdateData())
return;
ASSERT(m_nCheckNo == GetDocument()->GetActiveCheckNo());
// Update the document with the values entered by the user for
// this check.
GetDocument()->UpdateCheck(this, m_nCheckNo, m_dwCents, m_strPayTo,
m_strDate, m_strMemo);
}
void CCheckView::OnAmountNumChange()
{
// When the dollar/cents amount numeric field (eg, "19.98") is changed
// by the user, then update the dollar/cents text field
// (eg, "Nineteen and 98/100ths Dollars").
DWORD dwCents;
CWnd* pCtlAmountText = GetDlgItem(IDC_AMOUNTTEXT);
if (GetDollarsCents(GetDlgItem(IDC_AMOUNTNUM), dwCents))
{
CString str = GetDollarsCentsText(dwCents);
pCtlAmountText->SetWindowText(str);
}
else
{
CString str;
str.LoadString(IDS_UNKNOWN);
pCtlAmountText->SetWindowText(str);
}
}